package com.wing.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wing.user.model.entity.Authority;
import com.wing.user.model.response.AuthorityVO;
import com.wing.user.model.response.RoleAuthorityVO;

import java.util.List;

/**
 * 权限-Service
 *
 * @author
 */
public interface AuthorityService extends IService<Authority> {

    /**
     * 通过用户id列表
     *
     * @param userId 用户id
     * @return {@link List<String>}
     */
    List<AuthorityVO> listByUserId(Long userId);

    /**
     * 按角色id列表
     *
     * @param roleIdList 角色id列表
     * @return {@link List<String>}
     */
    List<AuthorityVO> listByRoleIds(List<Long> roleIdList);

    /**
     * 通过角色id列表
     *
     * @param roleId 角色id
     * @return {@link List<String>}
     */
    List<AuthorityVO> listByRoleId(Long roleId);

    /**
     * 权限角色列表
     *
     * @return {@link List<RoleAuthorityVO>}
     */
    List<RoleAuthorityVO> authorityRoleList();

    /**
     * 同步
     *
     */
    void sync();

    /**
     * 生成权限、菜单并且设置给相关角色添加对应权限
     * @param newAuthoritys
     * @param newNames
     * @param lastAuthoritys
     * @param sorts
     * @param updMenuNames
     * @return
     */
    boolean generateData(String newAuthoritys, String newNames, String lastAuthoritys, String sorts, String updMenuNames);
}
